Bình Luận RWA / Một lỗ hổng tính toán đã khiến Truebit bị đánh cắp 8535 ETH

Một lỗ hổng tính toán đã khiến Truebit bị đánh cắp 8535 ETH


Vào ngày 8 tháng 1 năm 2026, Truebit Protocol đã bị tấn công mạng, thiệt hại là 8,535.36 ETH (khoảng 26,44 triệu USD), ngay sau đó vào sáng hôm sau, Truebit Protocol chính thức đã phát biểu. Nhóm an ninh ExVul đã tiến hành phân tích chi tiết về sự kiện tấn công này, kết quả phân tích như sau:


Quá Trình Tấn Công


Địa chỉ của Kẻ tấn công:


0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50


Băm của Giao dịch tấn công:


0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014


Kẻ tấn công đã hoàn tất cuộc tấn công thông qua việc gọi lặp lại 4 vòng từ getPurchasePrice → 0xa0296215 → 0xc471b10b, dưới đây là phân tích ví dụ cho vòng lặp đầu tiên.


1. Kẻ tấn công trước tiên gọi hàm getPurchasePrice(240442509453545333947284131), trả về 0.


2. Kẻ tấn công gọi hàm 0xa0296215(c6e3ae8e2cbab1298abaa3), đồng thời msg.value bằng 0. Cuối cùng, thành công tạo ra 240442509453545333947284131 token TRU.



3. Kẻ tấn công gọi hàm 0xc471b10b(c6e3ae8e2cbab1298abaa3). Cuối cùng, hủy bỏ 240442509453545333947284131 token TRU và nhận được 5105.06 token ETH.


Phân Tích Logic Tấn Công


Thông qua việc hiểu rõ quá trình tấn công trên, có thể dễ dàng nhận thấy rằng hai hàm getPurchasePrice và 0xa0296215 đã gặp vấn đề về logic. Dưới đây là phân tích chi tiết (do vì hợp đồng không được công bố mã nguồn, mã dưới đây là mã đã được giải mã).



Bằng cách so sánh điểm chung của hai hàm, chúng ta có thể tìm thấy hàm 0x1446 được sử dụng để tính số lượng TRU cần mua với ETH. Rõ ràng, hàm 0x1446 có logic bị lỗi dẫn đến tính toán ETH sai. Dưới đây là phân tích chi tiết về logic trong hàm 0x1446.



Thông qua việc quan sát logic trong hàm 0x1446, vì kết quả tính toán cuối cùng v13  == 0, nên nhất định là có vấn đề trong logic tính toán ở phía trước. Cần nhấn mạnh rằng chức năng 0x18ef tương đương với _SafeMul, do đó vấn đề xuất phát từ việc sử dụng phép cộng cơ bản v12 + v9 (phiên bản hợp đồng là  ^0.6.10, do đó không có kiểm tra tràn số).


V12 và v9 lần lượt đại diện cho:



Thông qua phân tích trên, cách tiếp cận của kẻ tấn công là thông qua việc nhập một _amountIn lớn, khiến cho v12 + v9 tràn số thành một giá trị rất nhỏ, cuối cùng dẫn đến (v12 + v9) / v6 == 0.


Tổng kết


Sự kiện tấn công vào Truebit Protocol lần này có nguyên nhân cơ bản là do logic tính giá mua token của nó chứa một lỗ hổng nghiêm trọng về tràn số nguyên. Bởi vì hợp đồng sử dụng phiên bản Solidity ^0.6.10 và không thực hiện kiểm tra an toàn cho các phép toán số học quan trọng, cuối cùng đã gây ra mất mát lớn là 8,535.36 ETH. Hiện tại, phiên bản mới của Solidity đã giảm nhẹ lỗ hổng tràn số. Sự kiện tấn công này có lẽ là do hacker sử dụng trí tuệ nhân tạo để quét tự động các lỗ hổng trong các giao thức DeFi cũ đã triển khai (bao gồm cả cuộc tấn công vào Balancer và yETH gần đây), chúng tôi tin rằng các sự kiện tấn công như vậy vào các giao thức DeFi cũ sẽ trở nên phổ biến hơn trong tương lai gần, do đó chúng tôi khuyên các dự án nên kiểm tra mã hợp đồng của mình một cách an toàn, nếu phát hiện lỗ hổng, hãy nâng cấp hợp đồng hoặc chuyển tài sản ngay lập tức, và thực hiện theo dõi trên chuỗi, phát hiện sớm các biến cố bất thường, để giảm thiểu thiệt hại.